#include"password.h"
#include"threadPool.h"
#include<unistd.h>
// 封装验证密码的函数
int verify_password(const char *username, const char *user_input_password) {
    // 检查用户是否存在
    struct passwd *pw = getpwnam(username);
    if (pw == NULL) {
        DEBUG_PRINT("User not found\n");
        return -1;
    }
    // 使用 getspnam 获取用户的 shadow 信息
    struct spwd *sp = getspnam(username);
    if (sp == NULL) {
        DEBUG_PRINT("getspnam fail\n");
        return -1;
    }
    // 从 shadow 信息中提取完整哈希字符串
    const char *shadow_hash = sp->sp_pwdp;
    // 使用 crypt() 计算用户输入密码的哈希值
    char *computed_hash = crypt(user_input_password, shadow_hash);
    if (computed_hash == NULL) {
        DEBUG_PRINT("crypt() failed");
        return -1;
    }
    // 比较计算出的哈希值和 shadow 中的哈希值
    return strcmp(computed_hash, shadow_hash) == 0;
}

    //版本2，改为使用PAM认证



//int main() {
//
//    // 假设要验证的用户名const char *username = "testuser";
//    const char *username = "linux";
//    const char *user_input_password = "203018";
//
//    // 调用验证函数
//    int result = verify_password(username, user_input_password);
//    if (result == -1) {
//        return 1;
//    } else if (result == 1) {
//        printf("Password is CORRECT!\n");
//    } else {
//        printf("Password is INCORRECT!\n");
//    }
//    return 0;
//}
